package util

import (
	"crypto/md5"
	"crypto/sha256"
	"encoding/hex"
	"fmt"
)

func Md5Sum(data []byte) string {
	//小数据量直接用这个就行
	//bytes := md5.Sum(data)
	//fmt.Printf("bytes 打印16进制 : %x \n", bytes)
	//return hex.EncodeToString(bytes[:])

	//针对大数据量级的写入计算hash
	hash := md5.New()
	hash.Write(data)
	// ....
	bytes := hash.Sum(nil)
	fmt.Printf("bytes 打印16进制 : %x \n", bytes)
	return hex.EncodeToString(bytes)
}

func Md5SumBytes(data []byte) []byte {
	//小数据量直接用这个就行
	//bytes := md5.Sum(data)
	//fmt.Printf("bytes 打印16进制 : %x \n", bytes)
	//return hex.EncodeToString(bytes[:])

	//针对大数据量级的写入计算hash
	hash := md5.New()
	hash.Write(data)
	// ....
	bytes := hash.Sum(nil)
	fmt.Printf("bytes 打印16进制 : %x \n", bytes)
	return bytes
}

func Sha256Sum(data []byte) string {
	//小数据量直接用这个就行
	//bytes := sha256.Sum256(data)
	//fmt.Printf("bytes 打印16进制 : %x \n", bytes)
	//return hex.EncodeToString(bytes[:])

	//针对大数据量级的写入计算hash
	hash := sha256.New()
	hash.Write(data)
	// ....
	bytes := hash.Sum(nil)
	fmt.Printf("bytes 打印16进制 : %x \n", bytes)
	return hex.EncodeToString(bytes)
}

func Sha256SumBytes(data []byte) []byte {
	//小数据量直接用这个就行
	//bytes := sha256.Sum256(data)
	//fmt.Printf("bytes 打印16进制 : %x \n", bytes)
	//return hex.EncodeToString(bytes[:])

	//针对大数据量级的写入计算hash
	hash := sha256.New()
	hash.Write(data)
	// ....
	bytes := hash.Sum(nil)
	fmt.Printf("bytes 打印16进制 : %x \n", bytes)
	return bytes
}
